//两种版本的进度程序条

//修饰重装版（更完善、全面）：
#define _CRT_SECURE_NO_WARNINGS 1
#include"processBar.h"
#include<stdio.h>
#include<string.h>
#include<unistd.h>

//进度条
char bar[NUM];    //全局数组默认初始化为0

//进度进行的旋转标志
const char* icon = "|/-\\";


//把当前比率转化为进度条,并为下一次加一个小格（一个百分点）
//rate[0,100]
void processBar(int rate)
{
    if (rate < 0 || rate>100)   return;
    int len = strlen(icon);

    printf(ANSI_COLOR_GREEN"[%-100s]"ANSI_COLOR_END"[%d%%][%c]\r", bar, rate, icon[rate % len]);
    fflush(stdout);

    bar[rate++] = STYLE;
    if (rate <= 99)   bar[rate] = STYLE_TAIL; 
}

void initbar()
{
    memset(bar, '\0', sizeof(bar));
}


//进度条程序的简单版（原理版）
//#include"processBar.h"
//#include<string.h>
//#include<unistd.h>
//
//char bar[NUM];
//memset(bar, '\0', sizeof(bar));
//
//const char* icon = "|/-\\";
//void processBar()
//{
//    int len = strlen(icon);
//
//    int cnt = 0;
//    while (cnt <= TOP)  //每循环一次进度+1，循环了101次，最后一次加的进度，进度条没有被记录到缓存区
//    {
//        printf("[%-100s][%d%%][%c] \r", bar, cnt, icon[cnt % len]);
//        fflush(stdout);
//
//        bar[cnt++] = STYLE;   //进度+1;
//        if (cnt <= 99)   bar[cnt] = STYLE_TAIL;
//
//        usleep(TIME);  //0.05s，单位是微秒。 unistd.h是头文件
//    }
//    printf("\n");
//
//}
